package com.squirrel.service;

import com.github.pagehelper.PageInfo;
import com.squirrel.facade.DataMedium;
import com.squirrel.facade.Delete;
import com.squirrel.facade.Select;
import com.squirrel.facade.Update;

import java.util.List;

/**
 * @author wangyan
 */
public interface ISqlHandler {

    int save(DataMedium dataMedium);

    int[][] save(List<DataMedium> dataMedia);

    long saveAndReturnUUID(DataMedium dataMedium);

    int delete(Delete delete);

    int update(Update update);

    int[] updates(Update update);

    int[][] updates(List<Update> updates);

    /**
     * 查询数据是否存在，存在返回true,否则返回false
     *
     * @param select
     * @return
     */
    boolean isDataExists(Select select);

    DataMedium queryOne(Select select);

    List<DataMedium> query(Select select);

    /**
     * 分页查询
     *
     * @param select
     * @param offset
     * @param limit
     * @return
     */
    PageInfo<DataMedium> query(Select select, int offset, int limit);

    /**
     * 查询数据并返回自己想要的类型（适用于查询单个字段返回值）
     *
     * @param select
     * @param var3
     * @param <T>
     * @return
     */
    <T> T queryForObject(Select select, Class<T> var3);

    /**
     * 查询数据并返回自己想要的类型（适用于查询单个字段返回值）
     *
     * @param dataQuery
     * @param var3
     * @param <T>
     * @return
     */
    <T> List<T> queryForList(Select select, Class<T> var3);
}
